<template>
  <div> 
    <h1>当前求和为: {{total}}</h1>
    <h1>当前求和放大 10 倍为: {{bigTotal}}</h1>
    <h2>我在{{school}}, 学习{{subject}}</h2>
    <select v-model.number="n">
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
    </select>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementOdd">当前求和为奇数再加</button>
    <button @click="incrementWait">等一等再加</button>
  </div>
</template>

<script>
  import {mapState, mapGetters} from 'vuex'

  export default {
    name:'Count', 
    data(){
      return { 
        n:1, // 用户选择的数据 
      }
    },
    computed: {
      // 借助 mapState 生成计算属性，从 state 中读取数据 (对象写法)
      // ...mapState({total:'total', school:'school', subject:'subject'})  
      // 借助 mapState 生成计算属性，从 state 中读取数据 (数组写法)
      ...mapState(['total', 'school', 'subject']) ,
      
      // 借助 mapGetters 生成计算属性，从 getters 中读取数据 (对象写法)
      // ...mapGetters({bigTotal: 'bigTotal'})
      // 借助 mapGetters 生成计算属性，从 getters 中读取数据 (数组写法)
      ...mapGetters(['bigTotal'])
    },
    methods: {
      increment(){ 
        this.$store.commit('ADD', this.n)
      },
      decrement(){ 
        this.$store.commit('SUB', this.n)
      },
      incrementOdd(){ 
        this.$store.dispatch('addOdd', this.n)
      },
      incrementWait(){
        this.$store.dispatch('addWait', this.n) 
      }
    },
    
    mounted() {
      // console.log(this)
    },
  }
</script>
<style>
  button{
    margin-left: 10px;
  }
</style>